// pages/signup/signup.js
const db = wx.cloud.database();
const command = db.command;
Page({
  /**
   * 页面的初始数据
   */
  data: {
    getusername:'',
    getpassword:'',
    getre_password:'',
    gettelephone:'',
    checked_radio:false,
    inputvalue:null,
    re_inputvalue:null,
    isregisted:false,
    isdouble_name:false,
  },

  // 获取用户名输入框的内容
  input_username:function(event){
    // console.log(event.detail.value);
    // 下面一行代码用来去除用户输入的空格
    var getusername = event.detail.value.replace(/\s+/g, '')
    // console.log(getusername);
    this.setData({
      getusername:getusername
    })
  },

  // 获取密码输入框内容
  input_password:function(event){
    console.log(event.detail.value);
    this.setData({
      getpassword:event.detail.value
    })
  },

  // 获取密码确认框的内容
  re_input_password:function(event){
    console.log(event.detail.value);
    this.setData({
      getre_password:event.detail.value
    })
  },

  // 获取联系方式框的内容
  input_telephone:function(event){
    console.log(event.detail.value);
    this.setData({
      gettelephone:event.detail.value
    })
  },

  // 点击协议的单选按钮变为选中和取消选中
  tap_radio:function(event){
    var checked = this.data.checked_radio;
    this.setData({
      checked_radio: !checked
    })
  },

  // 点击清除密码按钮来清除密码
  clear_password:function(event){
    var blank = "";
    this.setData({
      inputvalue:blank
    })
  },

  // 点击清除密码重复框的密码
  clear_repassword:function(event){
    var blank = "";
    this.setData({
      re_inputvalue:blank
    })
  },

  // 在数据库中查询刚刚输入的手机号码来判断是否已经注册过
  judge_tel:async function(){
    return db.collection('users')
    .where({
      telephone : this.data.gettelephone
    })
    .get()
    .then(res=>{
      if (res.data.length === 0) {
        this.setData({
          isregisted:false
        });
      } else {
          this.setData({
            isregisted:true
          });
      }
    }).catch(err=>{
      console.log(err);
    })
  },

  // 在数据库中查询输入的用户名，来避免重名注册
  judege_name:async function(){
    return db.collection('users')
    .where({
      username:this.data.getusername
    })
    .get()
    .then(res=>{
      if (res.data.length === 0) {
        this.setData({
          isdouble_name:false
        })
      } else {
        this.setData({
          isdouble_name:true
        })
    }
    }).catch(err=>{
      console.log(err);
    })
  },

  // 点击立即注册按钮，开始对刚刚输入的各项数据进行判错
  signup_now:async function(){
    await this.judege_name();
    await this.judge_tel();
    // 下面是判断输入的数据是否符合设定的格式要求
    var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/;
    let reg = /^[\u2E80-\u9FFF]+$/;
    let english_reg = /[a-zA-Z]+/g;
    if (this.data.getusername == '') {
      wx.showToast({
        title: '请输入用户名',
        icon: "none",
        duration: 1000,
        mask: true
      })
      return false;
    } else if (!english_reg.test(this.data.getusername)) {
      wx.showToast({
        title: '名字格式错误',
        icon: "none",
        duration: 1000,
        mask: true
      })
      return false;
    } else if (this.data.gettelephone == '') {
      wx.showToast({
        title: '手机号不能为空',
        icon: "none",
      })
      return false;
    } else if (this.data.gettelephone.length != 11) {
      wx.showToast({
        title: '手机号长度有误',
        icon: "none",
      })
      return false
    } else if (!myreg.test(this.data.gettelephone)) {
      wx.showToast({
        title: '手机号有误！',
        icon: "none",
        duration: 1500
      })
      return false;
    } else if (this.data.getpassword == '') {
      wx.showToast({
        title: '密码不能为空',
        icon: "none",
      })
      return false
    } else if (this.data.getre_password == '') {
      wx.showToast({
        icon: "none",
        title: '请再次输入您的密码',
      })
      return false
    } else if(this.data.getpassword != this.data.getre_password) {
      wx.showToast({
        icon: "none",
        title: '两次密码输入不一致，请重新输入',
      })
      return false
    } else if(this.data.getpassword.length<=8 || this.data.getre_password.length<=8) {
      wx.showToast({
        icon: "none",
        title: '密码长度不得小于8位，请重新输入',
      })
      return false
    } else if(this.data.checked_radio == false) {
      wx.showToast({
        icon: "none",
        title: '请先知晓并同意相关协议',
      })
      return false
    }
    // 判断当前输入的手机号是否已被注册
      else if(this.data.isregisted === true){
          wx.showToast({
            icon: "none",
            title: '该手机号已被注册,请直接登录',
          })
          setTimeout(() => {
            wx.showLoading({
              title: '加载中',
            })
          }, 1000);
          setTimeout(() => {
            wx.hideLoading();
          }, 1500);
          // 手机号已被注册就跳转到登录页面
          setTimeout(() => {
            wx.navigateTo({
              url: '../../pages/index1/index1',
            })
          }, 2000);

    }else if(this.data.isdouble_name === true) {
      wx.showToast({
        icon: "none",
        title: '用户名已存在',
      })
    }
    // 就可以写入数据库了
      else{
      // 就可以把这个用户的信息进行上传了，稍后再上传头像吧，另外封装一个函数用来写入数据库？还是就在这儿写呢。。。。
      console.log("信息没有任何问题了，可以开始上传了");
      db.collection("users").add({
        data:{
          username:this.data.getusername,
          password:this.data.getre_password,
          telephone:this.data.gettelephone,
          avatar:'',
          role:'user',
        }
      }).then(res=>{
        console.log("插入数据库成功");
        console.log(res);
      })
      // 设定一定的缓冲时间来上传到数据库
      setTimeout(() => {
        wx.showLoading({
          title: '加载中',
        })
        wx.showToast({
          title: '注册成功',
          icon:"none"
        })
        wx.hideLoading()

        this.setData({
          isdouble_name: false,
          isregisted: false
        });
      }, 1000);
      // 注册成功后跳转到我的界面，并在界面上显示个人信息
      wx.switchTab({
        url: '../../pages/me/me',
      })





    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})